package com.open.httpauto.http;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

/**
 * 参数默认标准属性
 * 需要具体的业务集成此基础类完成属性的扩展
 */
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class ParameterBase implements java.io.Serializable {
    /**
     * appid 开发者id
     */
    private String appId;
    /**
     * 成功响应错误码
     */
    private String code;
    /**
     * 成功响应信息
     */
    private String msg;
    /**
     * 签名秘钥，引擎自动赋值
     */
    private String appSecret;
    /**
     * 用户id
     */
    private String userId;
    /**
     * 用户id
     */
    private String username;
    /**
     * 类型
     */
    private String type;
    /**
     * 状态
     */
    private String status;
    /**
     * 回调地址
     */
    private String notifyUrl;
    /**
     * 时间戳
     */
    private Long timestamp;
    /**
     * 请求随机数
     */
    private String nonce;
    /**
     * 请求版本号
     */
    private String version;
    /**
     * 设备id
     */
    private String deviceId;
    /**
     * 签名
     */
    private String sign;
    /**
     * 扩展字段，请求后返回
     */
    private String extra;
    /**
     * 被回调时返回结果
     */
    private String response;


    /**
     * 属性映射枚举
     */
    public enum Property {
        Appid("appId"),
        Code("code"),
        Msg("msg"),
        AppSecret("appSecret"),
        UserId("userId"),
        Username("username"),
        Type("type"),
        Status("status"),
        Sign("sign"),
        NotifyUrl("notifyUrl"),
        Timestamp("timestamp"),
        Nonce("nonce"),
        Version("version"),
        DeviceId("deviceId"),
        Extra("extra"),
        Response("response"),
        ;
        public String property;

        Property(String property) {
            this.property = property;
        }
    }
}
